![]() |
![]() | ||||||||||||||||
![]() | |||||||||||||||||
![]() ![]() ![]() ![]()
╨αßε≥α ± ⌠αΘδα∞Φ |
╧≡ΦδεµσφΦσ DirectFile─δ Φδδ■±≥≡α÷ΦΦ ±∩ε±εßεΓ ≡αßε≥√ ± Ωδα±±ε∞ RandomAccessFile ∞√ ∩εΣπε≥εΓΦδΦ ∩≡ΦδεµσφΦσ DirectFile, Γ Ωε≥ε≡ε∞ ±ετΣασ≥± φσßεδⁿ°α ßατα Σαφφ√⌡. ▌≥α ßατα Σαφφ√⌡ ±ε±≥εΦ≥ Φτ ΣΓ≤⌡ ⌠αΘδεΓ: ⌠αΘδα Σαφφ√⌡ Φ ⌠αΘδα ΦφΣσΩ±α. ┬ ⌠αΘδσ Σαφφ√⌡ ⌡≡αφ ≥± τα∩Φ±Φ, ±ε±ε≥ ∙Φσ Φτ ΣΓ≤⌡ ∩εδσΘ - ≥σΩ±≥εΓεπε Φ ≈Φ±δεΓεπε. ╥σΩ±≥εΓεσ ∩εδσ ± φατΓαφΦσ∞ name ⌡≡αφΦ≥ ±≥≡εΩΦ, ταΩ≡√≥√σ ±∞ΦΓεδα∞Φ Ωεφ÷α ±≥≡εΩΦ "\r\n", α ≈Φ±δεΓεσ ± φατΓαφΦσ∞ account - τφα≈σφΦ ≥Φ∩α int. ┬ ∞σφ■ File φα°σπε ∩≡ΦδεµσφΦ σ±≥ⁿ ±≥≡εΩΦ New Φ View records (≡Φ±. 5). ╨Φ±. 5. ╤≥≡εΩΦ ∞σφ■ File ╤ ∩ε∞ε∙ⁿ■ ±≥≡εΩΦ New Γ√ ∞εµσ≥σ ±ετΣα≥ⁿ ßατ≤ Σαφφ√⌡, ±ε±≥ε ∙≤■ Φτ ≥≡σ⌡ τα∩Φ±σΘ. ┼±δΦ Γ√ß≡α≥ⁿ Φτ ∞σφ■ File ±≥≡εΩ≤ View records, φα ²Ω≡αφσ ∩ε ΓΦ≥± ΣΦαδεπεΓα ∩αφσδⁿ ± ±εΣσ≡µΦ∞√∞ ²≥Φ⌡ τα∩Φ±σΘ (≡Φ±. 6). ╨Φ±. 6. ╤εΣσ≡µΦ∞εσ ≥≡σ⌡ ∩σ≡Γ√⌡ ∩εδσΘ ßατ√ Σαφφ√⌡ ┬∞σ±≥ε ±Φ∞Γεδα ∩σ≡σΓεΣα ±≥≡εΩΦ Γ ΣΦαδεπεΓεΘ ∩αφσδΦ ε≥εß≡αµασ≥± ∞αδσφⁿΩΦΘ ΩΓαΣ≡α≥ΦΩ. ─α∞∩ ±ετΣαΓασ∞επε ⌠αΘδα Σαφφ√⌡ ∩≡ΦΓσΣσφ φα ≡Φ±. 7. ╨Φ±. 7. ─α∞∩ ⌠αΘδα Σαφφ√⌡ ╚τ ²≥επε Σα∞∩α ΓΦΣφε, ≈≥ε ∩ε±δσ ∩σ≡Γεπε τα∩≤±Ωα ∩≡ΦδεµσφΦ Γ ⌠αΘδσ Σαφφ√⌡ Φ∞σ■≥± ±δσΣ≤■∙Φσ τα∩Φ±Φ:
╧≡Φ ∩ε±δσΣ≤■∙Φ⌡ τα∩≤±Ωα⌡ ΩαµΣ√Θ ≡ατ Γ ⌠αΘδ Σαφφ√⌡ ß≤Σ≤≥ ΣεßαΓδ ≥ⁿ± ∩≡ΦΓσΣσφφ√σ Γ√°σ τα∩Φ±Φ. ╥αΩ ΩαΩ ∩εδσ name Φ∞σσ≥ ∩σ≡σ∞σφφ≤■ ΣδΦφ≤, Σδ εßσ±∩σ≈σφΦ Γετ∞εµφε±≥Φ ∩≡ ∞επε Σε±≥≤∩α Ω τα∩Φ±Φ ∩ε σσ φε∞σ≡≤ φσεß⌡εΣΦ∞ε πΣσ-≥ε ⌡≡αφΦ≥ⁿ ±∞σ∙σφΦ Γ±σ⌡ τα∩Φ±σΘ. ╠√ ²≥ε Σσδασ∞ Γ ⌠αΘδσ ΦφΣσΩ±εΓ, Σα∞∩ Ωε≥ε≡επε ∩≡σΣ±≥αΓδσφ φα ≡Φ±. 8. ╨Φ±. 8. ─α∞∩ ⌠αΘδα ΦφΣσΩ±α ╘αΘδ ΦφΣσΩ±εΓ ⌡≡αφΦ≥ 8-ßαΘ≥εΓ√σ ±∞σ∙σφΦ τα∩Φ±σΘ ⌠αΘδα Σαφφ√⌡ Γ ⌠ε≡∞α≥σ long. ╟φα φε∞σ≡ τα∩Φ±Φ, ∞εµφε≡ δσπΩε Γ√≈Φ±δΦ≥ⁿ ±∞σ∙σφΦσ Γ ⌠αΘδσ ΦφΣσΩ±εΓ, ∩ε Ωε≥ε≡ε∞≤ ⌡≡αφΦ≥± ±∞σ∙σφΦσ φ≤µφεΘ τα∩Φ±Φ Γ ⌠αΘδσ Σαφφ√⌡. ┼±δΦ ΦτΓδσ≈ⁿ ²≥ε ±∞σ∙σφΦσ, ≥ε ∞εµφε Γ√∩εδφΦ≥ⁿ ∩ετΦ÷ΦεφΦ≡εΓαφΦσ Γ ⌠αΘδσ Σαφφ√⌡ ± ÷σδⁿ■ ≈≥σφΦ φ≤µφεΘ τα∩Φ±Φ, ≈≥ε Φ Σσδασ≥ φα°σ ∩≡ΦδεµσφΦσ. ╚±⌡εΣφ√Θ ≥σΩ±≥ ∩≡ΦδεµσφΦ DirectFile╚±⌡εΣφ√Θ ≥σΩ±≥ ∩≡ΦδεµσφΦ DirectFile ∩≡σΣ±≥αΓδσφ Γ δΦ±≥Φφπσ 2. ╦Φ±≥Φφπ 2. ╘αΘδ DirectFile.java import java.awt.*; import java.io.*; import java.util.*; public class DirectFile { public static void main(String args[]) { MainFrameWnd frame = new MainFrameWnd("MenuApp"); frame.setSize( frame.getInsets().left + frame.getInsets().right + 320, frame.getInsets().top + frame.getInsets().bottom + 240); frame.show(); } } class MainFrameWnd extends Frame { MenuBar mbMainMenuBar; Menu mnFile; Menu mnHelp; boolean fDBEmpty = true; public MainFrameWnd(String sTitle) { super(sTitle); setSize(400, 200); setBackground(Color.yellow); setForeground(Color.black); setLayout(new FlowLayout()); mbMainMenuBar = new MenuBar(); mnFile = new Menu("File"); mnFile.add("New..."); mnFile.add("View records..."); mnFile.add("-"); mnFile.add("Exit"); mnHelp = new Menu("Help"); mnHelp.add("Content"); mnHelp.add("-"); mnHelp.add("About"); mbMainMenuBar.add(mnFile); mbMainMenuBar.add(mnHelp); setMenuBar(mbMainMenuBar); } public void paint(Graphics g) { g.setFont(new Font("Helvetica", Font.PLAIN, 12)); g.drawString("Frame window", 10, 70); super.paint(g); } public boolean handleEvent(Event evt) { if(evt.id == Event.WINDOW_DESTROY) { setVisible(false); System.exit(0); return true; } else return super.handleEvent(evt); } public boolean action(Event evt, Object obj) { MenuItem mnItem; if(evt.target instanceof MenuItem) { mnItem = (MenuItem)evt.target; if(obj.equals("Exit")) { System.exit(0); } else if(obj.equals("New...")) { if(fDBEmpty) { SimpleDBMS db = new SimpleDBMS( "dbtest.idx", "dbtest.dat"); db.AddRecord("Ivanov", 1000); db.AddRecord("Petrov", 2000); db.AddRecord("Sidoroff", 3000); db.close(); fDBEmpty = false; MessageBox mbox; mbox = new MessageBox( "Database created", this, "Information", true); mbox.show(); } } else if(obj.equals("View records...")) { SimpleDBMS db = new SimpleDBMS( "dbtest.idx", "dbtest.dat"); String szRecords; szRecords = db.GetRecordByNumber(0) + db.GetRecordByNumber(1) + db.GetRecordByNumber(2); db.close(); MessageBox mbox; mbox = new MessageBox(szRecords, this, "Database records", true); mbox.show(); } else if(obj.equals("Content")) { MessageBox mbox; mbox = new MessageBox( "Item Content selected", this, "Dialog from Frame", true); mbox.show(); } else if(obj.equals("About")) { MessageBox mbox; mbox = new MessageBox( "Item About selected", this, "Dialog from Frame", true); mbox.show(); } else return false; return true; } return false; } } class MessageBox extends Dialog { Label lbMsg; Button btnOK; public MessageBox(String sMsg, Frame parent, String sTitle, boolean modal) { super(parent, sTitle, modal); resize(300, 100); setLayout(new GridLayout(2, 1)); lbMsg = new Label(sMsg, Label.CENTER); add(lbMsg); btnOK = new Button("OK"); add(btnOK); } public boolean handleEvent(Event evt) { if(evt.id == Event.WINDOW_DESTROY) { dispose(); return true; } else return super.handleEvent(evt); } public boolean action(Event evt, Object obj) { Button btn; if(evt.target instanceof Button) { btn = (Button)evt.target; if(evt.target.equals(btnOK)) { dispose(); } else return false; return true; } return false; } } class SimpleDBMS { RandomAccessFile idx; RandomAccessFile dat; long idxFilePointer = 0; public SimpleDBMS(String IndexFile, String DataFile) { try { idx = new RandomAccessFile( IndexFile, "rw"); dat = new RandomAccessFile( DataFile, "rw"); } catch(Exception ioe) { System.out.println(ioe.toString()); } } public void close() { try { idx.close(); dat.close(); } catch(Exception ioe) { System.out.println(ioe.toString()); } } public void AddRecord(String name, int account) { try { idx.seek(idx.length()); dat.seek(dat.length()); idxFilePointer = dat.getFilePointer(); idx.writeLong(idxFilePointer); dat.writeBytes(name+ "\r\n"); dat.writeInt(account); } catch(Exception ioe) { System.out.println(ioe.toString()); } } public String GetRecordByNumber(long nRec) { String sRecord = "<empty>"; try { Integer account; String str = null; idx.seek(nRec * 8); idxFilePointer = idx.readLong(); dat.seek(idxFilePointer); str = dat.readLine(); account = new Integer(dat.readInt()); sRecord = new String("> " + account + ", " + str); } catch(Exception ioe) { System.out.println(ioe.toString()); } return sRecord; } } ╬∩Φ±αφΦσ Φ±⌡εΣφεπε ≥σΩ±≥α ∩≡ΦδεµσφΦ DirectFile─δ ≡αßε≥√ ± ßατεΘ Σαφφ√⌡ ∞√ ±ετΣαδΦ Ωδα±± SimpleDBMS, ε∩≡σΣσδΦΓ Γ φσ∞ Ωεφ±≥≡≤Ω≥ε≡, ∞σ≥εΣ√ Σδ ΣεßαΓδσφΦ τα∩Φ±σΘ, ΦτΓδσ≈σφΦ τα∩Φ±σΘ ∩ε Φ⌡ ∩ε≡ ΣΩεΓε∞≤ φε∞σ≡≤, α ≥αΩµσ ∞σ≥εΣ Σδ ταΩ≡√≥Φ ßατ√ Σαφφ√⌡. ╤ετΣαφΦσ ßατ√ Σαφφ√⌡╩επΣα ∩εδⁿτεΓα≥σδⁿ Γ√ßΦ≡ασ≥ Φτ ∞σφ■ File ±≥≡εΩ≤ New, ±εε≥Γσ≥±≥Γ≤■∙ΦΘ εß≡αßε≥≈ΦΩ ±εß√≥Φ ±ετΣασ≥ ßατ≤ Σαφφ√⌡, ∩σ≡σΣαΓα Ωεφ±≥≡≤Ω≥ε≡≤ Φ∞σφα ⌠αΘδα ΦφΣσΩ±α dbtest.idx Φ ⌠αΘδα Σαφφ√⌡ dbtest.dat: SimpleDBMS db = new SimpleDBMS( "dbtest.idx", "dbtest.dat"); ╧ε±δσ ²≥επε ± ∩ε∞ε∙ⁿ■ ∞σ≥εΣα AddRecord, ε∩≡σΣσδσφφεπε Γ Ωδα±±σ SimpleDBMS, Γ ßατ≤ ΣεßαΓδ ■≥± ≥≡Φ τα∩Φ±Φ, ±ε±≥ε ∙Φσ Φτ ≥σΩ±≥εΓεπε Φ ≈Φ±δεΓεπε ∩εδσΘ: db.AddRecord("Ivanov", 1000); db.AddRecord("Petrov", 2000); db.AddRecord("Sidoroff", 3000); ╧ε±δσ ταΓσ≡°σφΦ ≡αßε≥√ ± ßατεΘ Σαφφ√⌡ εφα ταΩ≡√Γασ≥± ∞σ≥εΣε∞ close Φτ Ωδα±±α SimpleDBMS: db.close(); ╧≡ε±∞ε≥≡ τα∩Φ±σΘ ßατ√ Σαφφ√⌡╧≡Φ Γ√ßε≡σ ±≥≡εΩΦ View records Φτ ∞σφ■ File ∩≡ΦδεµσφΦσ ε≥Ω≡√Γασ≥ ⌠αΘδ ßατ√ Σαφφ√⌡: SimpleDBMS db = new SimpleDBMS( "dbtest.idx", "dbtest.dat"); ╟α≥σ∞ εφε ΦτΓδσΩασ≥ ≥≡Φ τα∩Φ±Φ ± φε∞σ≡α∞Φ 0, 1 Φ 2, Γ√τ√Γα Σδ ²≥επε ∞σ≥εΣ GetRecordByNumber, ≥αΩµσ ε∩≡σΣσδσφφ√Θ Γ Ωδα±±σ SimpleDBMS: String szRecords; szRecords = db.GetRecordByNumber(0) + db.GetRecordByNumber(1) + db.GetRecordByNumber(2); ╟α∩Φ±Φ εß·σΣΦφ ■≥± Φ ±ε⌡≡αφ ■≥± Γ ∩σ≡σ∞σφφεΘ szRecords ≥Φ∩α String. ╧ε±δσ ²≥επε ßατα Σαφφ√⌡ ταΩ≡√Γασ≥± : db.close(); ─δ ε≥εß≡αµσφΦ ±εΣσ≡µΦ∞επε τα∩Φ±σΘ ∞√ ±ετΣασ∞ ΣΦαδεπεΓ≤■ ∩αφσδⁿ φα ßατσ ε∩≡σΣσδσφφεπε φα∞Φ Ωδα±±α MessageBox: MessageBox mbox; mbox = new MessageBox(szRecords, this, "Database records", true); mbox.show(); ╩δα±± SimpleDBMS╨α±±∞ε≥≡Φ∞ ≥σ∩σ≡ⁿ Ωδα±± SimpleDBMS. ┬ ²≥ε∞ Ωδα±±σ ε∩≡σΣσδσφε ≥≡Φ ∩εδ ± Φ∞σφα∞Φ idx, dat Φ idxFilePointer, α ≥αΩµσ ≥≡Φ ∞σ≥εΣα. ╧εδ Ωδα±±α SimpleDBMS╧εδ idx Φ dat Γδ ■≥± εß·σΩ≥α∞Φ Ωδα±±α RandomAccessFile Φ ∩≡σΣ±≥αΓδ ■≥ ±εßεΘ, ±εε≥Γσ≥±≥Γσφφε, ±±√δΩΦ φα ⌠αΘδ ΦφΣσΩ±α Φ ⌠αΘδ Σαφφ√⌡. ╧εδσ idxFilePointer ≥Φ∩α long Φ±∩εδⁿτ≤σ≥± ΩαΩ ≡αßε≈σσ Φ ⌡≡αφΦ≥ ≥σΩ≤∙σσ ±∞σ∙σφΦσ Γ ⌠αΘδσ. ╩εφ±≥≡≤Ω≥ε≡ Ωδα±±α SimpleDBMS╩εφ±≥≡≤Ω≥ε≡ Ωδα±±α SimpleDBMS Γ√πδ ΣΦ≥ Σε±≥α≥ε≈φε ∩≡ε±≥ε. ┬±σ, ≈≥ε εφ Σσδασ≥, - ²≥ε ±ετΣασ≥ ΣΓα εß·σΩ≥α Ωδα±±α RandomAccessFile, ±εε≥Γσ≥±≥Γσφφε, Σδ ΦφΣσΩ±α Φ Σαφφ√⌡: idx = new RandomAccessFile(IndexFile, "rw"); dat = new RandomAccessFile(DataFile, "rw"); ╥αΩ ΩαΩ Γ Ωα≈σ±≥Γσ Γ≥ε≡επε ∩α≡α∞σ≥≡α Ωεφ±≥≡≤Ω≥ε≡≤ Ωδα±α RandomAccessFile ∩σ≡σΣασ≥± ±≥≡εΩα "rw", ⌠αΘδ√ ε≥Ω≡√Γα■≥± Φ Σδ ≈≥σφΦ , Φ Σδ τα∩Φ±Φ. ╠σ≥εΣ close╠σ≥εΣ close ταΩ≡√Γασ≥ ⌠αΘδ√ ΦφΣσΩ±α Φ Σαφφ√⌡, Γ√τ√Γα ∞σ≥εΣ close Φτ Ωδα±±α RandomAccessFile: idx.close(); dat.close(); ╠σ≥εΣ AddRecord╠σ≥εΣ AddRecord ΣεßαΓδ σ≥ φεΓ≤■ τα∩Φ±ⁿ Γ Ωεφσ÷ ⌠αΘδα Σαφφ√⌡, α ±∞σ∙σφΦσ ²≥εΘ τα∩Φ±Φ - Γ Ωεφσ÷ ⌠αΘδα ΦφΣσΩ±α. ╧ε²≥ε∞≤ ∩σ≡σΣ φα≈αδε∞ ±ΓεσΘ ≡αßε≥√ ≥σΩ≤∙α ∩ετΦ÷Φ εßεΦ⌡ ≤Ωαταφφ√⌡ ⌠αΘδεΓ ≤±≥αφαΓδΦΓασ≥± φα Ωεφσ÷ ⌠αΘδα. ─δ ≤±≥αφεΓΩΦ ∞√ ∩≡Φ∞σφΦδΦ ∞σ≥εΣ seek Φτ Ωδα±±α RandomAccessFile, ∩σ≡σΣαΓ σ∞≤ Γ Ωα≈σ±≥Γσ ∩α≡α∞σ≥≡α τφα≈σφΦσ ΣδΦφ√ ⌠αΘδα Γ ßαΘ≥α⌡, ε∩≡σΣσδσφφεσ ∩≡Φ ∩ε∞ε∙Φ ∞σ≥εΣα length Φτ ≥επε µσ Ωδα±±α: idx.seek(idx.length()); dat.seek(dat.length()); ╧σ≡σΣ ≥σ∞ ΩαΩ ΣεßαΓδ ≥ⁿ φεΓ≤■ τα∩Φ±ⁿ Γ ⌠αΘδ Σαφφ√⌡, ∞σ≥εΣ AddRecord ε∩≡σΣσδ σ≥ ≥σΩ≤∙≤■ ∩ετΦ÷Φ■ Γ ⌠αΘδσ Σαφφ√⌡ (Γ Σαφφε∞ ±δ≤≈ασ ²≥ε ∩ετΦ÷Φ Ωεφ÷α ⌠αΘδα) Φ τα∩Φ±√Γασ≥ ²≥≤ ∩ετΦ÷Φ■ Γ ⌠αΘδ ΦφΣσΩ±α: idxFilePointer = dat.getFilePointer(); idx.writeLong(idxFilePointer); ─αδσσ ∞σ≥εΣ AddRecord Γ√∩εδφ σ≥ ±ε⌡≡αφσφΦσ ∩εδσΘ τα∩Φ±Φ Γ ⌠αΘδσ Σαφφ√⌡. ─δ τα∩Φ±Φ ±≥≡εΩΦ Γ√τ√Γασ≥± ∞σ≥εΣ writeBytes, α Σδ τα∩Φ±Φ ≈Φ±δσφφεπε τφα≈σφΦ ≥Φ∩α int - ∞σ≥εΣ writeInt: dat.writeBytes(name + "\r\n"); dat.writeInt(account); ╬ß≡α≥Φ≥σ ΓφΦ∞σφΦσ, ≈≥ε Ω ±≥≡εΩσ ∞√ ΣεßαΓδ σ∞ ±Φ∞Γεδ√ ΓετΓ≡α≥α Ωα≡σ≥ΩΦ Φ ∩σ≡σΓεΣα ±≥≡εΩΦ. ▌≥ε ±Σσδαφε Φ±Ωδ■≈Φ≥σδⁿφε Σδ ≥επε ≈≥εß√ εßετφα≈Φ≥ⁿ Ωεφσ÷ ±≥≡εΩΦ ≥σΩ±≥εΓεπε ∩εδ . ╠σ≥εΣ GetRecordByNumber╠σ≥εΣ GetRecordByNumber ∩ετΓεδ σ≥ ΦτΓδσ≈ⁿ ∩≡εΦτΓεδⁿφ≤■ τα∩Φ±ⁿ Φτ ⌠αΘδα Σαφφ√⌡ ∩ε σσ ∩ε≡ ΣΩεΓε∞≤ φε∞σ≡≤. ═α∩ε∞φΦ∞, ≈≥ε ±∞σ∙σφΦ Γ±σ⌡ τα∩Φ±σΘ ⌡≡αφ ≥± Γ ⌠αΘδσ ΦφΣσΩ±εΓ Φ Φ∞σ■≥ εΣΦφαΩεΓ≤■ ΣδΦφ≤ 8 ßαΘ≥. ╧εδⁿτ≤ ±ⁿ ²≥Φ∞, ∞σ≥εΣ GetRecordByNumber Γ√≈Φ±δ σ≥ ±∞σ∙σφΦσ Γ ⌠αΘδσ ΦφΣσΩ±α ∩≡ε±≥√∞ ≤∞φεµσφΦσ∞ ∩ε≡ ΣΩεΓεπε φε∞σ≡α τα∩Φ±Φ φα ΣδΦφ≤ ∩σ≡σ∞σφφεΘ ≥Φ∩α long, ≥ε σ±≥ⁿ φα 8 ßαΘ≥, α τα≥σ∞ Γ√∩εδφ σ≥ ∩ετΦ÷ΦεφΦ≡εΓαφΦσ: idx.seek(nRec * 8); ╧ε±δσ ²≥επε ∞σ≥εΣ GetRecordByNumber ΦτΓδσΩασ≥ Φτ ⌠αΘδα ΦφΣσΩ±εΓ ±∞σ∙σφΦσ φ≤µφεΘ τα∩Φ±Φ Γ ⌠αΘδσ Σαφφ√⌡, Γ√τ√Γα Σδ ²≥επε ∞σ≥εΣ readLong, α τα≥σ∞ Γ√∩εδφ σ≥ ∩ετΦ÷ΦεφΦ≡εΓαφΦσ Γ ⌠αΘδσ Σαφφ√⌡: idxFilePointer = idx.readLong(); dat.seek(idxFilePointer); ╧εδ τα∩Φ±Φ ≈Φ≥α■≥± Φτ ⌠αΘδα Σαφφ√⌡ Γ ΣΓα ∩≡Φσ∞α. ┬φα≈αδσ ≈Φ≥ασ≥± ±≥≡εΩα ≥σΩ±≥εΓεπε ∩εδ , α τα≥σ∞ - ≈Φ±δσφφεσ τφα≈σφΦσ, Σδ ≈σπε Γ√τ√Γα■≥± , ±εε≥Γσ≥±≥Γσφφε, ∞σ≥εΣ√ readLine Φ readInt: str = dat.readLine(); account = new Integer(dat.readInt()); ╧εδ≤≈σφφ√σ τφα≈σφΦ ∩εδσΘ εß·σΣΦφ ■≥± Γ ≥σΩ±≥εΓεΘ ±≥≡εΩσ Φ τα∩Φ±√Γα■≥± Γ ∩σ≡σ∞σφφ≤■ sRecord: sRecord = new String("> " + account + ", " + str); ╤εΣσ≡µΦ∞εσ ²≥εΘ ∩σ≡σ∞σφφεΘ ∞σ≥εΣ GetRecordByNumber ΓετΓ≡α∙ασ≥ Γ Ωα≈σ±≥Γσ ΦτΓδσ≈σφφεΘ ±≥≡εΩΦ τα∩Φ±Φ ßατ√ Σαφφ√⌡. |